盧娜(Luna,又寫作露娜或路娜)是羅馬神話中的月亮女神。「Luna」在法語和義大利語中也有月亮或月神的意思。在希臘神話中她的對應者為塞勒涅。盧娜也常常和黛安娜或赫卡忒混淆在一起。在羅馬的阿文提諾山上建有供奉她的神廟。 — 維基百科
錯棚了...
不是她 ?
Lua是葡萄牙文的月亮,是一個輕量、快速、容易學習且容易嵌入的程式語言。其目標本就是成為一個很容易嵌入其它語言中使用的語言。其精簡的核心只包含一些最基本的功能,啟動速度非常之快。 儘管如此,透過最基本的功能,甚至可以實現多種編程範式。
Lua是設計為一個 可嵌入 於其他語言的程式語言。要特別強調的是他不是用於嵌入式設備,而是嵌入於其他語言,其目標本就是成為一個很容易嵌入其它語言中使用的語言。或許對於寫Python、Ruby、JS的人沒什麼感覺,但其可以與C/C++、Java互動,並以低成本的方式加到程式裡面。雖然重點於此,但Lua最流行的版本完全使用C標準寫成,因此也完全有理由能夠運行於嵌入式設備。
Lua可以用於嵌入式硬體,不僅可以嵌入其他程式語言,而且可以嵌入微處理器中,例如NodeMCU開源硬體項目將Lua嵌入到Wi-Fi SoC中 — 維基百科
Lua非常小,於Linux作業系統下的5.4版,才307kB。kB阿各位!其設計也極為簡潔,幾乎有辦法在幾個小時內,學會 近乎所有 Lua核心內容。沒錯,是近乎所有!與快速學會Python不同,是可以幾乎完全的學會Lua。不過相對的,也有許多功能是需要自行延伸開發,這通常會需要C語言的知識與開發經驗。本系列文章會做一些簡單示範,但當前Lua也已經有上百至上千已經寫好的套件可以使用,而無須自行再開發。
它只提供了很小的一個特性集合來滿足不同編程範式的需要,而不是為某種特定的編程範式提供繁雜的特性支援。
儘管Lua非常小,還是可以用物件導向的方式開發程式。此外,Lua包含記憶體自動垃圾回收,亦支援運算子多載。
我就是因為Lua的OOP模擬,才之後才去了解JS的OOP。(兩者都是prototype base OOP) 關於JS的OOP,可以閱讀我的7天搞懂JS進階議題。
因為Lua極小,但畢竟也是個腳本語言(Script Language)。也因此你可以透或Lua去學習其他腳本語言的高級特性。此外,Lua的執行效率也是極高,容易撰寫,更可以用於設計領域特定語言(DSL)。
作為一個圖靈完全、可擴張的程式語言,去探討Lua做得到哪些別得程式語言做不到的事情似乎沒有意義。我的意思是,其他語言可用於的地方,Lua也完全可以用到。是否使用要考量到一個程式語言的特性、生態。如果你是要提供API或彈性開發,這或許會是一個可以考量的選項。此外,我也仍然會推薦學習Lua,學完它應該可以獲得不少。
語言體現了人類思源的本質。 — 松本行弘的程序世界